package com.caijg.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.caijg.model.dto.LoginDTO;
import com.caijg.model.dto.PasswordDTO;
import com.caijg.model.dto.RegisterDTO;
import com.caijg.model.entity.User;
import com.caijg.model.vo.resp.Result;
import jakarta.servlet.http.HttpServletRequest;

/**
 * <p>
 * 用户表 服务类
 * </p>
 *
 * @author caijg
 * @since 2024-12-26
 */
public interface IUserService extends IService<User> {

    /**
     * 发送邮箱验证码
     * @param registerDTO 验证码信息
     * @return 结果
     */
    Result sendEmailCode(RegisterDTO registerDTO);

    /**
     * 用户注册
     * @param registerDTO 注册信息
     * @return 注册结果
     */
    Result register(RegisterDTO registerDTO);

    /**
     * 用户登录
     * @param loginDTO 登录信息
     * @return  登录结果
     */
    Result login(LoginDTO loginDTO);

    /**
     * 更新用户信息
     * @param user 用户信息
     * @return 更新结果
     */
    Result updateProfile(User user);

    /**
     * 修改密码
     * @param passwordDTO 密码信息
     * @return 修改结果
     */
    Result changePassword(PasswordDTO passwordDTO);

    /**
     * 用户退出登录
     * @return 退出结果
     */
    Result logout(HttpServletRequest request);
}
